﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using middleware.dominio;
using middleware.utiles;

namespace middleware
{
    public partial class AgregarBandejaEntrada : Form
    {
        private UserControl ventanaConfiguracion;
        private BandejaEntrada bandejaEntrada = null;

        public AgregarBandejaEntrada()
        {
            InitializeComponent();
        }
        
        public AgregarBandejaEntrada(BandejaEntrada bandeja)
        {
            this.bandejaEntrada = bandeja;
            InitializeComponent();
        }

        private void AgregarBandejaEntrada_Load(object sender, EventArgs e)
        {
            List<ITipoBandejaEntrada> tiposBandejaEntrada = BusinessFactory.getMiddleware().ObtenerTiposBandejasEntrada();
            foreach (ITipoBandejaEntrada tb in tiposBandejaEntrada)
            {
                cboTipo.Items.Add(tb);
            }
            //Controlo si es por modificar, de ser asi precargo los atributos
            if (bandejaEntrada != null)
            {
                txtNombre.Text = bandejaEntrada.nombre;
                cboTipo.SelectedItem = bandejaEntrada.tipoBandeja;
                //Seteo la configuracion actual
                ITipoBandejaEntrada tipoSeleccionado = (ITipoBandejaEntrada)cboTipo.SelectedItem;
                ventanaConfiguracion = tipoSeleccionado.getVentanaConfiguracion();
                tipoSeleccionado.setConfiguracionFormulario(ventanaConfiguracion, bandejaEntrada.configuracion);
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cboTipo_SelectedIndexChanged(object sender, EventArgs e)
        {
            ITipoBandejaEntrada tipoSeleccionado = (ITipoBandejaEntrada)cboTipo.SelectedItem;
            ventanaConfiguracion = tipoSeleccionado.getVentanaConfiguracion();
            pnlVentanaBandeja.Controls.Clear();
            pnlVentanaBandeja.Controls.Add(ventanaConfiguracion);
            ventanaConfiguracion.Visible = true;
        }

        private void btnConfirmar_Click(object sender, EventArgs e)
        {
            bool resultado = false;
            if (cboTipo.SelectedItem != null)
            {
                ITipoBandejaEntrada tipoSeleccionado = (ITipoBandejaEntrada)cboTipo.SelectedItem;
                string configuracion = tipoSeleccionado.getConfiguracionFormulario(ventanaConfiguracion);
                //Controlo si es modificar o agregar
                if (bandejaEntrada == null)
                    resultado = BusinessFactory.getMiddleware().CrearBandejaEntrada(tipoSeleccionado, txtNombre.Text, configuracion) != null;
                else
                    resultado = BusinessFactory.getMiddleware().ModificarBandejaEntrada(bandejaEntrada, tipoSeleccionado, txtNombre.Text, configuracion); 
            }
            if (resultado)
                this.Close();
            else
                MessageBox.Show("Hay datos incorrectos.");
        }
    }
}
